package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author SWJ
 * @create 2021-07-21 16:18
 * 1.接收用户
 */


//private String name = "李四";

/**
 * 表达式: springel表达式 简称为spel表达式
 * 语法:  ${表达式内容}
 * 工作原理:
 * 容器: 在内存中一个存储大量数据的Map集合
 * 1.当SpringBoot程序启动时,首先加载application.yml的配置文件
 * 2.当程序加载key-value结构时,将数据保存到Map集合中(容器内部)
 * 3.利用Spel表达式,通过key,获取value,之后为属性赋值.
 */


@RestController
//spring 容器启动时，动态添加配置文件 一般要修改字符集
@PropertySource(value = "classpath:/person.properties", encoding = "UTF-8")

@PropertySource(value = "classpath:/person1.properties", encoding = "UTF-8")
public class HelloContriller {


    @Autowired
    //DI依赖注入
    @Qualifier("helloSeRVICE")
    //按照名称注入


    //private String day="1天";
    /**
     * 规则:从Spring容器根据key获取数据,之后为属性赋值
     * 语法: spel表达式    ${key}
     */
    @Value("${user.day}")
    private String day;

    @Value("${person.name}")
    private String name;

    @Value("${person.id}")
    private String id;

    @Value("${persion1.test1}")
    private String test1;

    //设置返回值
    @RequestMapping("/getMsg")
    public String getMsg() {
        return "这个雨下几天:" + day + name;
    }


    @RequestMapping("/getMsg1")
    public String getMsg1() {
        return id + test1;
    }

    /**
     * 没有采用链式结构
     * 链式加载的原则：重启pojo
     * <p>
     * public User setId(Integer id) {
     * this.id = id;
     * return this;
     * }
     */

    public void testLomBok() {
        User qwer = new User();
        qwer.setId(11111).setName("aaaa");

    }
}